<?php
use Workerman\Worker;
use Workerman\WebServer;
use Workerman\Autoloader;
use PHPSocketIO\SocketIO;

// composer autoload
require_once __DIR__ . '/vendor/autoload.php';

$io = new SocketIO(5628);
$io->on('connection', function($socket){
    var_dump('connect');
    // 当客户端断开连接是触发（一般是关闭网页或者跳转刷新导致）
    $socket->on('disconnect', function () use($socket) {
        var_dump('disconnect');
    });
    $socket->on('imgCallback', function ($res) use($socket) {
        $params=json_decode($res,true);
        $img=isset($params['img'])?$params['img']:'';
        if($img){
            // $file='../out/' . $params['name'] . '.png';
            $file='../../out/' . time().mt_rand(1000,9999) . '.png';
            var_dump('保存图片，'.$file);
            // if(!file_exists($file)){
                $out=base64_decode(preg_replace('/data:image\/png;base64/','',$img));
                file_put_contents($file, $out);

                // $arr=getimagesize($img);
                // file_put_contents('../log/img.log',var_export($arr,true)."\n\n",FILE_APPEND);
            // }
        }
    });
});

    // 当$io启动后监听一个http端口，通过这个端口可以给任意uid或者所有uid推送数据
$io->on('workerStart', function(){
    // 监听一个http端口
    $inner_http_worker = new Worker('http://0.0.0.0:5629');
    // 当http客户端发来数据时触发
    $inner_http_worker->onMessage = function($http_connection, $data){
        global $uidConnectionMap;
        $_POST = $_POST ? $_POST : $_GET;
        // 推送数据的url格式 type=publish&to=uid&content=xxxx
        switch(@$_POST['type']){
            case 'publish':
                global $io;
                $io->emit('newTask', @$_POST['content']);
                return $http_connection->send('ok');
        }
        return $http_connection->send('<form action="" method="post"><input type="hidden" name="type" value="publish"><textarea cols="80" rows="10" name="content"></textarea><button>提交</button></form>');
    };
    // 执行监听
    $inner_http_worker->listen();
});

if (!defined('GLOBAL_START')) {
    Worker::runAll();
}
